#ifndef MAPZONE_H
#define MAPZONE_H

#include <vector>

class Actor;
/**
 * Part of a map.
 */
class MapZone
{
public:


    MapZone();
    void insert(Actor *);
    void remove(Actor *);
    Actor *getPointerToActorAtPos(const unsigned &pos);
    unsigned getNumActors();
    unsigned getNumCharacters();
    unsigned getNumMovingObjects();

    /**
     * Destinations of the objects that left this zone.
     * This is necessary in order to have an accurate iterator around moving
     * objects.
     */
    std::vector< unsigned > destinations;
private:
    unsigned mNumCharacters;
    unsigned mNumMovingObjects;
    /**
     * Objects present in this zone.
     * Characters are stored first, then the remaining MovingObjects, then the
     * remaining Objects.
     */
    std::vector< Actor * > mActors;
};


#endif // MAPZONE_H
